display = gdk_device_get_display (device);
+ gdk_x11_display_error_trap_push (display);
info = XIQueryDevice (GDK_DISPLAY_XDISPLAY (display),
device_xi2->device_id, &ndevices);
+ gdk_x11_display_error_trap_pop_ignored (display);
- for (i = 0, j = 0; i < info->num_classes; i++)
+ for (i = 0, j = 0; info && i < info->num_classes; i++)
{
XIAnyClassInfo *class_info = info->classes[i];
GdkAxisUse use;
j++;
}
- XIFreeDeviceInfo (info);
+ if (info)
+ XIFreeDeviceInfo (info);
}
if (mask)
{
if (ev->info[i].flags & XIDeviceEnabled)
{
+ gdk_x11_display_error_trap_push (display);
info = XIQueryDevice (xdisplay, ev->info[i].deviceid, &ndevices);
- add_device (device_manager, &info[0], TRUE);
- XIFreeDeviceInfo (info);
+ gdk_x11_display_error_trap_pop_ignored (display);
+ if (info)
+ {
+ add_device (device_manager, &info[0], TRUE);
+ XIFreeDeviceInfo (info);
+ }
}
else if (ev->info[i].flags & XIDeviceDisabled)
remove_device (device_manager, ev->info[i].deviceid);
/* Add new master if it's an attachment event */
if (ev->info[i].flags & XISlaveAttached)
{
+ gdk_x11_display_error_trap_push (display);
info = XIQueryDevice (xdisplay, ev->info[i].deviceid, &ndevices);
-
- master = g_hash_table_lookup (device_manager->id_table,
- GINT_TO_POINTER (info->attachment));
-
- _gdk_device_set_associated_device (slave, master);
- _gdk_device_add_slave (master, slave);
-
- g_signal_emit_by_name (device_manager, "device-changed", master);
+ gdk_x11_display_error_trap_pop_ignored (display);
+ if (info)
+ {
+ master = g_hash_table_lookup (device_manager->id_table,
+ GINT_TO_POINTER (info->attachment));
+ XIFreeDeviceInfo (info);
+
+ _gdk_device_set_associated_device (slave, master);
+ _gdk_device_add_slave (master, slave);
+
+ g_signal_emit_by_name (device_manager, "device-changed", master);
+ }
}
g_signal_emit_by_name (device_manager, "device-changed", slave);